本文记录一个Java基础的Bug
由于需要写一个文件上传的接口,为了防止命名重复的问题,我想到了用系统当时的毫秒数的Long值来给文件命名。
Date d = new Date();
d.getTime();
因为是多文件上传,所以用到了for循环给文件进行命名。
Date d = new Date();
for(int i=0;i<9 ; i++)
d.getTime());
但后来却发现一个很严重的错误就是文件保存过后只有一个文件,我很奇怪,按道理,时间是每时每刻都不一样的但是为什么会导致文件名重复呢?
于是我打印出了所有命名发现在一个for循环下产生的文件的名字居然是一样的。于是想到,一般cpu执行速度都十分快在3Ghz左右,但是系统时间仅仅是毫秒级的,所以当在同一毫秒下系统执行了多条指令,所以输出了相同的文件名,正确的做法是可以在时间上加入当时的循环此时,这样就可以帮助不会再重复了。